import { baseUrl } from "../../utils/util"

// pages/detail/detail.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 绑定 picker 时间选择器的值
    date: '',
    // 绑定用户选择的年和月
    year: 0,
    month: 0,
    // 选择月份的总支出
    expense: 0,
    // 选择月份支出的整数部分
    expenseIngeger: '0',
    // 选择月份支出的小数部分
    expenseDecimal: '00',
    // 选择月份的总收入
    income: 0,
    // 选择月份收入的整数部分
    incomeIngeger: '0',
    // 选择月份收入的小数部分
    incomeDecimal: '00',
    // 明细列表数据
    detailList: [{
      year: '',
      date: '',
      day: '',
      total: 0,
      detail: [{
        src: '',
        desc: '',
        price: 0
      }]
    }],
    // 表示被选中的类型
    typeChoosen: '科室',
    // 现阶段只存在三个类型方向
    typeList: [{
      index: 0,
      name: '科室',
      value: 'depart'
    }, {
      index: 1,
      name: '工会',
      value: 'laborUnion'
    }, {
      index: 2,
      name: '党支部',
      value: 'partyBranch'
    }],
    // 表示当前选择的索引值为0
    typeIndex: 0,
    errorMsg: '',
    errorShow: false
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // 1. 获取当天的日期, 作为初试日期使用
    this.getCurrentDate();
    // 2. 获取当前用户的选择月份数据
    this.getDeatilList();
    // 3. 获取当前用户的选择月份收入总和
    this.getIncomeByMonth(10);
    // 4. 获取当前用户的选择月份支出总和
    this.getExpenseByMonth(10);
  },

  /**
   * 首页 picker 时间选择器 事件监听函数
   */
  bindDateChange: function (e) {
    // 解构出 value 数据
    const { value: date } = e.detail
    let [year, month] = date.split('-')
    this.setData({
      year,
      month
    })
    this.getDeatilList()
  },

  /**
   * 获取当天的日期，将其赋值给 data 域的 year month day, 作为初始值使用
   */
  getCurrentDate () {
    let date = new Date();
    this.setData({
      year: date.getFullYear(),
      month: (date.getMonth() + 1) < 10 ? '0' + date.getMonth() + 1 : date.getMonth() + 1,
      day: date.getDay() < 10 ? '0' + date.getDay() : date.getDay()
    })
  },

  /**
   * 获取明细列表
   */
  getDeatilList () {
    // 1. 模拟 通过网络请求 请求数据
    const detailList = [
      {
        year: '2020',
        date: '10月01号',
        day: '星期一',
        total: -22.5,
        detail: [{
          src: '',
          desc: '张帆测试1',
          price: -10
        }, {
          src: '',
          desc: '张帆测试2',
          price: -5
        }, {
          src: '',
          desc: '张帆测试2',
          price: -7.5
        }]
      },
      {
        year: '2020',
        date: '10月01号',
        day: '星期二',
        total: -30,
        detail: [{
          src: '',
          desc: '张帆测试1',
          price: -10
        },
        {
          src: '',
          desc: '张帆测试2',
          price: -5
        },
        {
          src: '',
          desc: '张帆测试2',
          price: -7.5
        }]
      }
    ];
    // // 2. 将获取的细节明细 进行每一天汇总，将数据绑定到total上
    // for (let i = 0; i < detailList.length; i++) {
    //   let sum = 0;
    //   for (let j = 0; j < detailList[i].detail.length; j++) {
    //     sum += detailList[i].detail[j].price;
    //   }
    //   detailList[i].total = sum;
    // }

    this.setData({
      detailList
    })

  },

  /**
   * 通过指定月份获取总收入
   * @param {指定月份} month 
   */
  getIncomeByMonth (month) {
    wx.request({
      url: `${baseUrl}/detail/income/${month}`,
      // 获取数据成功
      success: (result) => {
        const { meta } = result.data
        // 读取数据出现错误
        if (meta.status !== 200) {
          this.setData({
            errorMsg: '数据读取失败',
            errorShow: true
          })
        }
        const { data: res } = result.data
        let incomeArr = this.transPrice(res.income)
        this.setData({
          // expense: result.data.data.expense
          incomeIngeger: incomeArr[0],
          incomeDecimal: incomeArr[1]
        })
      }
    });
  },
  /**
   * 通过指定月份获取总支出
   * @param {指定月份} month 
   */
  getExpenseByMonth (month) {
    wx.request({
      url: `${baseUrl}/detail/expense/${month}`,
      success: (result) => {
        const { data: res } = result.data
        let expenseArr = this.transPrice(res.expense)
        this.setData({
          // expense: result.data.data.expense
          expenseIngeger: expenseArr[0],
          expenseDecimal: expenseArr[1]
        })
      }
    });
  },

  /**
   * 将 Number 类型的 price 进行数据分割
   * @param {Number} price 不能为空 将整数部分和小数部分进行分离
   */
  transPrice (price) {
    // 将 price 转换成 String 类型
    let priceStr = price + ''
    // 将 priceStr 按照 '.' 进行分割
    let priceArr = priceStr.split('.')

    // 没有小数部分
    if (priceArr.length == 1) {
      priceArr.push('00')
    } else {
      // 有小数部分，但是小数部分长度为1是，进行 '0' 补位
      if (priceArr[1].length == 1) {
        priceArr[1] = priceArr[1] + '0'
      }
    }
    return priceArr
  },

  /**
   * 用来监听 类型改变 时的事件处理函数
   */
  bindTypeChange (e) {
    const { value: typeIndex } = e.detail
    this.setData({
      typeIndex: this.data.typeList[typeIndex].index,
      typeChoosen: this.data.typeList[typeIndex].name
    })
    this.getDeatilList()
  }
})